package com.yunxin.core.utils.infra.common.constant;

import com.yunxin.common.result.IResultCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * @author zero°
 * @since 2023-05-31
 */
@Getter
@RequiredArgsConstructor
public enum CoreResultCode implements IResultCode {

    /**
     * 系统执行出错
     */
    SYSTEM_EXECUTION_ERROR("B0001", "系统执行出错"),

    /**
     * 身份证必填
     */
    PARAM_IDENTITY_ERROR("P0001", "身份证必填"),

    /**
     * 芝麻分必填
     */
    PARAM_SESAME_SEED_ERROR("P0002", "芝麻分必填"),

    /**
     * 信用卡必填
     */
    PARAM_CREDIT_CARD_ERROR("P0003", "信用卡必填"),

    /**
     * 教育程度必填
     */
    PARAM_EDUCATION_LEVEL_ERROR("P0004", "教育程度必填"),

    /**
     * 房产必填
     */
    PARAM_HOUSE_ERROR("P0005", "房产必填"),

    /**
     * 车产必填
     */
    PARAM_VEHICLE_ERROR("P0006", "车产必填"),

    /**
     * 公积金必填
     */
    PARAM_ACCUMULATION_FUND_ERROR("P0007", "公积金必填"),

    /**
     * 社保必填
     */
    PARAM_SOCIAL_SECURITY_ERROR("P0008", "社保必填"),

    /**
     * 保险必填
     */
    PARAM_INSURE_ERROR("P0009", "保险必填"),

    /**
     * 职业必填
     */
    PARAM_CAREER_ERROR("P0010", "职业必填"),

    /**
     * 月收入必填
     */
    PARAM_MONTH_INCOME_ERROR("P0011", "月收入必填"),

    /**
     * 京东白条必填
     */
    PARAM_JD_BT_ERROR("P0012", "京东白条必填"),

    /**
     * 蚂蚁花呗必填
     */
    PARAM_ANT_CREDIT_PAY_ERROR("P0013", "蚂蚁花呗必填"),

    /**
     * 微粒贷必填
     */
    PARAM_MICRO_LOAN_ERROR("P0014", "微粒贷必填"),

    /**
     * 年龄必填
     */
    PARAM_AGE_ERROR("P0015", "年龄必填"),

    /**
     * 性别必填
     */
    PARAM_SEX_ERROR("P0016", "性别必填"),

    /**
     * 逾期必填
     */
    PARAM_BE_OVERDUE_ERROR("P0017", "逾期必填"),

    /**
     * 借款期限必填
     */
    PARAM_LOAN_PERIOD_ERROR("P0018", "借款期限必填"),

    /**
     * 借款金额必填
     */
    PARAM_LOAN_AMOUNT_ERROR("P0019", "借款金额必填"),

    /**
     * 商户用户账户等级错误
     */
    MERCHANT_ACCOUNT_LEVEL_EXIST("CM100", "账户权限错误,子账户不可创建/编辑账户"),

    /**
     * 账号已登录错误
     */
    ADMIN_ACCOUNT_LOGIN_ERROR("CA001", "账号已登录，请退出已登录账户！"),


    /**
     * 页面数据不存在
     */
    PAGE_NOT_EXIST("CP100", "页面数据不存在"),

    /**
     * 产品上架失败,产品配置未配置完
     */
    PRODUCT_UPDATE_STATUS_ERROR("CPR00", "产品上架失败,产品配置未配置完"),

    /**
     * 产品不存在
     */
    PRODUCT_NOT_EXIST("CPR01", "产品不存在"),
    /**
     * 产品已上架
     */
    PRODUCT_STATUS_ERROR("CPR02", "操作失败,产品已上架"),
    /**
     * 产品名称已存在
     */
    PRODUCT_NAME_EXIST("CPR03", "产品名称已存在"),
    /**
     * 产品跳转链接为空
     */
    PRODUCT_JUMP_URL_BLANK("CPR04", "产品跳转链接为空"),
    /**
     * UV产品用户协议
     */
    PRODUCT_UV_LOGIN_JUMP_URL_BLANK("CPR08", "UV产品用户协议为空"),
    /**
     * 产品企业微信跳转链接为空
     */
    PRODUCT_WECHAT_JUMP_URL_BLANK("CPR05", "产品企业微信跳转链接为空"),
    /**
     * 产品配置异常
     */
    PRODUCT_CONFIG_ERROR("CPR06", "产品配置异常"),

    /**
     * 产品微信公众号跳转链接为空
     */
    PRODUCT_WECHAT_OFFICIAL_ACCOUNT_JUMP_URL_BLANK("CPR07", "产品微信公众号跳转链接为空"),

    /**
     * 弹窗重复名称
     */
    DUPLICATE_NAME_EXIST("C0352", "弹窗重复名称"),

    /**
     * 用户不存在
     */
    USER_NOT_EXIST("CU100", "用户不存在"),


    /**
     * 订单不存在
     */
    ORDER_USER_APPLY_NOT_EXIST("CO100", "订单不存在"),
    /**
     * 分配订单失败
     */
    ORDER_ALLOCATION_ORDER_ERROR("CO101", "分配订单失败"),
    /**
     * 分配订单失败，获取锁异常
     */
    ORDER_ALLOCATION_ORDER_LOCK_ERROR("CO102", "分配订单失败，获取锁异常"),

    /**
     * 分配订单失败,商户账户匹配失败
     */
    ORDER_ALLOCATION_ORDER_ACCOUNT_ERROR("CO103", "分配订单失败,商户账户匹配失败"),



    /**
     * 渠道推广code已存在
     */
    CHANNEL_PROMOTION_CODE_EXIST("CC100", "渠道链接code已存在"),
    /**
     * 渠道推广不存在
     */
    CHANNEL_PROMOTION_NOT_EXIST("CC101", "渠道推广不存在"),
    /**
     * 渠道推广关闭
     */
    CHANNEL_PROMOTION_STATUS_CLOSE("CC102", "该渠道推广已关闭"),
    /**
     * 渠道推广客户配置不存在
     */
    CHANNEL_PROMOTION_CUSTOMER_NOT_EXIST("CC103", "渠道推广客户配置不存在"),
    /**
     * 渠道code已存在
     */
    CHANNEL_CODE_EXIST("CC104", "渠道code已存在"),

    /**
     * 渠道推广启用失败,渠道推广配置未配置完
     */
    CHANNEL_PROMOTION_UPDATE_STATUS_ERROR("CPR00", "渠道链接启用失败,渠道链接配置未配置完"),
    /**
     * 渠道转化渠道UV更新失败
     */
    CHANNEL_PROMOTION_TRANSFORM_UPDATE_ERROR("CPR01", "更新渠道UV失败,渠道UV需大于系统UV"),

    /**
     * 消息发送类型不存在
     */
    MESSAGE_TYPE_NOT_EXIST("CCA00", "消息发送类型不存在"),
    /**
     * 验证码过期
     */
    VERIFICATION_CODE_EXPIRE("CCA01", "验证码过期,请重新获取"),
    /**
     * 尝试次数过多
     */
    VERIFICATION_CODE_TRY_MORE_ERROR("CCA02", "尝试次数过多,一小时后操作"),
    /**
     * 验证码错误
     */
    VERIFICATION_CODE_TRY_MORE_ERROR_1("CCA03", "尝试次数过多，一小时内不能获取验证码"),
    /**
     * 验证码错误
     */
    VERIFICATION_CODE_ERROR("CCA04", "验证码错误"),

    /**
     * 获取验证码需要间隔一分钟
     */
    VERIFICATION_CODE_1_MIN_ERROR("CCA05", "获取验证码需要间隔一分钟"),


    /**
     * 发送消息加锁超时
     */
    SEND_MESSAGE_LOCK_ERROR("CCA06", "发送消息加锁超时"),

    /**
     * 商户下架了 商户已取消合作
     */
    MERCHANT_IS_LOSE_EFFICACY("M0001", "商户已取消合作"),
    ;

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }

    private final String code;
    private final String msg;

    @Override
    public String toString() {
        return "{" +
                "\"code\":\"" + code + '\"' +
                ", \"msg\":\"" + msg + '\"' +
                '}';
    }


    public static CoreResultCode getValue(String code) {
        for (CoreResultCode value : values()) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        // 默认系统执行错误
        return SYSTEM_EXECUTION_ERROR;
    }

}
